package com.strategy.core;

import java.util.Map;

/**
 * 策略接口定义
 * @param <T> 输入类型
 * @param <P> 参数类型
 * @param <R> 返回结果类型
 */
public interface BaseStrategy<T, P, R> {

    /**
     * 执行策略
     * @param input 输入数据
     * @param params 额外参数
     * @return 执行结果
     */
    R execute(T input, Map<String, P> params);

    /**
     * 获取策略标识
     */
    String getKey();

    /**
     * 获取策略版本
     */
    String getVersion();

    /**
     * 获取策略描述
     */
    String getDescription();
}
